package com.zlk.algorithm.algorithm.sort.heap;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * @program: algorithm
 * @ClassName V
 * @description:
 * @author: slfang
 * @create: 2024-01-25 17:13
 * @Version 1.0
 **/
public class V {
    public int age;
    public int level;

    public V(int age ,int level){
        this.age = age;
        this.level =level;
    }
    public V (){

    }

    public static void main(String[] args) {
        //int[] arr = new int[]{1,2,3,4,5};
        ArrayList list = new ArrayList();
        V V1 = new V(10, 10);
        V V2 = new V(3, 10);
        V V3 = new V(12, 10);
        V V4 = new V(4, 10);
        V V5 = new V(5, 10);

        PriorityQueue<V> priorityQueue = new PriorityQueue<>(new MyComp());
        priorityQueue.add(V1);
        priorityQueue.add(V2);
        priorityQueue.add(V3);
        priorityQueue.add(V4);
        priorityQueue.add(V5);

        MyComp myComp = new MyComp();

        //  // 任何比较器：
        //                // compare方法里，遵循一个统一的规范：
        //                // 返回正数的时候，认为第一个参数应该排在前面
        //                // 返回负数的时候，认为第二个参数应该排在前面
        //                // 返回0的时候，认为无所谓谁放前面
        //
        //                //默认都是从小到大排列的
        //                //compare(Object obj1, Object obj2):
        //                //Comparator接口中最常用的方法。它用于比较obj1和obj2两个对象的大小，根据比较结果返回一个整数值。
        //                //     如果obj1小于obj2，则返回负整数；如果obj1等于obj2，则返回零；如果obj1大于obj2，则返回正整数
        System.out.println(myComp.compare(V1, V2));
        System.out.println(myComp.compare(V2, V1));
        System.out.println("================");

        while (!priorityQueue.isEmpty()){
            System.out.println(priorityQueue.poll().age);
        }



    }
}


class MyComp implements Comparator<V>{

    @Override
    public int compare(V o1, V o2) {
        return o1.age-o2.age;
    }
}
